home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Micro on the Apple Volume 2 (1981)(Micro Ink).zip / Micro on the Apple Volume 2 (1981)(Micro Ink).do / THERMOMETER.bas < prev    next >
BASIC Source File  |  1996-12-24  |  4KB  |  92 lines

  1. 10  REM  ************************
  2. 15  REM  *                      *
  3. 20  REM  *  DIGITAL THERMOMETER *
  4. 25  REM  *     CARL KERSHNER    *
  5. 30  REM  *                      *
  6. 35  REM  *      THERMOMETER     *
  7. 40  REM  *                      *
  8. 45  REM  *  COPYRIGHT (C) 1981  *
  9. 50  REM  *    MICRO INK, INC.   *
  10. 55  REM  * CHELMSFORD, MA 01824 *
  11. 60  REM  *  ALL RIGHTS RESERVED *
  12. 65  REM  *                      *
  13. 70  REM  ************************
  14. 80  REM 
  15. 90  REM 
  16. 100  REM   DIGITAL THERMOMETER FOR THERMISTOR PROBE(DISPLAYS BOTH CELCIUS &FAHRENHEIT)
  17. 110  PRINT "WHICH INPUT DO YOU WANT(0,1,2,3)": INPUT NUMBER
  18. 120  PRINT "WHAT THERMISTOR CONSTANTS DO YOU WANT(RO,RATIO)": INPUT RO,RA
  19. 125 BETA = 1.7636E3 * LOG(RA)
  20. 130  HOME : REM   CLEAR SCREEN
  21. 140  REM  PRINT TEMPERATURE SCALE CHARACTERS
  22. 150  GR : COLOR= 15
  23. 160  HLIN 26,27 AT 6: HLIN 26,27 AT 7: HLIN 26,27 AT 9: HLIN 26,27 AT 10: VLIN 7,9 AT 25: VLIN 7,9 AT 28
  24. 170  HLIN 34,38 AT 9: HLIN 34,38 AT 10: HLIN 34,36 AT 14: HLIN 34,36 AT 15: VLIN 9,20 AT 33
  25. 180  HLIN 26,27 AT 23: HLIN 26,27 AT 24: HLIN 26,27 AT 26: HLIN 26,27 AT 27: VLIN 24,26 AT 25: VLIN 24,26 AT 28
  26. 190  VLIN 28,29 AT 38: VLIN 27,28 AT 37: VLIN 26,27 AT 36: VLIN 26,27 AT 35: VLIN 27,28 AT 34
  27. 200  VLIN 28,35 AT 33: VLIN 35,36 AT 34: VLIN 36,37 AT 35: VLIN 36,37 AT 36: VLIN 35,36 AT 37: VLIN 34,35 AT 38
  28. 210 T = 298: REM   SET T(0) AT 298 DEGREES ABSOLUTE
  29. 220 RI = 589.94 * PDL(NUMBER): REM   READ INPUT & SCALE TO OHMS
  30. 230  IF RI = 0  THEN RI = 1: REM   PREVENT DIVISION BY ZERO
  31. 240 TC =  INT(1/(1/T - LOG(RO/RI)/BETA) -272.5): REM   CALCULATE TEMPERATURE IN DEGREES CELCIUS AND ROUND TO NEAREST INTEGER
  32. 245  IF  ABS(TC) >999  THEN  GOTO 220: REM   LIMIT OVERFLOWING DISPLAY
  33. 250 SIGN = 0
  34. 260  IF TC <0  THEN SIGN = 15
  35. 270  COLOR= SIGN
  36. 280  HLIN 3,5 AT 29: HLIN 3,5 AT 30: REM   DISPLAY NEGATIVE SIGN
  37. 290 TC =  ABS(TC)
  38. 300 J =  INT(TC/100):I = J: REM   SEPARATE HUNDRED'S DIGIT
  39. 310  IF J = 0  THEN J = 10: REM   BLANK LEADING ZERO
  40. 320 X = 1:Y = 26: GOSUB 1000: REM   DISPLAY CELCIUS HUNDRED'S
  41. 330 J =  INT((TC -J *100)/10): REM   SEPARATE TEN'S DIGIT
  42. 340  IF I = 0  AND J = 0  THEN J = 10: REM   BLANK BOTH HUNDRED'S AND TEN'S LEADING ZEROS IF J&I ARE BOTH ZERO
  43. 350 X = 9:Y = 26: GOSUB 1000: REM   DISPLAY CELCIUS TEN'S DIGIT
  44. 360 J = TC -I *100 -J *10: REM   SEPARATE ONE'S DIGIT
  45. 370 X = 17:Y = 26: GOSUB 1000: REM   DISPLAY CELCIUS ONE'S DIGIT
  46. 380 TF =  INT(9 *(1/(1/T - LOG(RO/RI)/BETA) -273)/5 +32.5): REM   CALCULATE FAHRENHEIT & ROUND TO NEAREST INTEGER
  47. 390 SIGN = 0
  48. 400  IF TF <0  THEN SIGN = 15
  49. 410  COLOR= SIGN
  50. 420  HLIN 3,5 AT 12: HLIN 3,5 AT 13: REM   DISPLAY NEGATIVE SIGN
  51. 430 TF =  ABS(TF)
  52. 440 J =  INT(TF/100):I = J: REM  SEPARATE HUNDRED'S DIGIT
  53. 450  IF J = 0  THEN J = 10: REM   BLANK LEADING ZERO
  54. 460 X = 1:Y = 9: GOSUB 1000: REM   DISPLAY FAHRENHEIT HUNDRED'S DIGIT
  55. 470 J =  INT((TF -J *100)/10): REM   SEPARATE TEN'S DIGIT
  56. 480  IF I = 0  AND J = 0  THEN J = 10: REM   BLANK BOTH HUNDRED'S AND TEN'S LEADING ZEROS
  57. 490 X = 9:Y = 9: GOSUB 1000: REM   DISPLAY FAHRENHEIT TEN'S DIGIT
  58. 500 J = TF -I *100 -J *10: REM   SEPARATE ONE'S DIGIT
  59. 510 X = 17:Y = 9: GOSUB 1000: REM   DISPLAY FAHRENHEIT ONE'S DIGIT
  60. 520  GOTO 220
  61. 1000  REM   SEVEN SEGMENT ENCODER
  62. 1010  ON J GOTO 1110,1120,1130,1140,1150,1160,1170,1180,1190,1200
  63. 1100 A = 15:B = 15:C = 15:D = 15:E = 15:F = 15:G = 0: GOTO 2000
  64. 1110 A = 0:B = 15:C = 15:D = 0:E = 0:F = 0:G = 0: GOTO 2000
  65. 1120 A = 15:B = 15:C = 0:D = 15:E = 15:F = 0:G = 15: GOTO 2000
  66. 1130 A = 15:B = 15:C = 15:D = 15:E = 0:F = 0:G = 15: GOTO 2000
  67. 1140 A = 0:B = 15:C = 15:D = 0:E = 0:F = 15:G = 15: GOTO 2000
  68. 1150 A = 15:B = 0:C = 15:D = 15:E = 0:F = 15:G = 15: GOTO 2000
  69. 1160 A = 15:B = 0:C = 15:D = 15:E = 15:F = 15:G = 15: GOTO 2000
  70. 1170 A = 15:B = 15:C = 15:D = 0:E = 0:F = 0:G = 0: GOTO 2000
  71. 1180 A = 15:B = 15:C = 15:D = 15:E = 15:F = 15:G = 15: GOTO 2000
  72. 1190 A = 15:B = 15:C = 15:D = 15:E = 0:F = 15:G = 15: GOTO 2000
  73. 1200 A = 0:B = 0:C = 0:D = 0:E = 0:F = 0:G = O:J = 0: GOTO 2000
  74. 2000  REM  SEVEN SEGMENT DISPLAY
  75. 2010  COLOR= A
  76. 2020  HLIN X +1,X +4 AT Y
  77. 2030  HLIN X +1,X +4 AT Y +1
  78. 2040  COLOR= G
  79. 2050  HLIN X +1,X +4 AT Y +5
  80. 2060  HLIN X +1,X +4 AT Y +6
  81. 2070  COLOR= D
  82. 2080  HLIN X +1,X +4 AT Y +10
  83. 2090  HLIN X +1,X +4 AT Y +11
  84. 2100  COLOR= F
  85. 2110  VLIN Y +1,Y +5 AT X
  86. 2120  COLOR= B
  87. 2130  VLIN Y +1,Y +5 AT X +5
  88. 2140  COLOR= E
  89. 2150  VLIN Y +6,Y +10 AT X
  90. 2160  COLOR= C
  91. 2170  VLIN Y +6,Y +10 AT X +5
  92. 2180  RETURN